最后更新时间:2019年7月5日
功能介绍
我们正处于信息化时代,每时每刻都在产生、表达地理信息。据统计,目前地理信息已占到了人类活动所涉及信息总量的80%,并且地理信息变化很快。因此,想要很好的管理地理信息,就必须保证空间数据的有效性,那么对地理信息的采集和更新就尤为重要。
现在主流的移动设备无论手机还是平板电脑,均具备无线网络、GPS定位、摄像头等模块,这使得数据采集和更新可以不受时空地域的限制,实时传输数据。此外,移动GIS又结合电子地图,既节约了纸质地图的成本,又提高了数据的精度、质量、可用行和复用率,使用移动GIS进行数据的采集和更新越来越受到大众的青睐。
正是由于具有实际的需求,地图编辑成为移动GIS平台的核心功能之一,MapGIS Mobile开发平台为用户提供了灵活的离在线一体化地图编辑功能,可以满足移动端各类应用需求,具体包括以下三类:
首先来了解地图要素编辑功能,其他两个模块在后续开发指南中会进行讲解。地图数据要素编辑,包括要素对象的增、删、改,即要素图形样式信息、几何信息、属性信息的编辑,广泛应用于数据采集相关项目,以及数据更新维护等应用场景。
地图要素编辑可以按照数据类型、要素类型、操作类型三种方法进行分类:
开发者可通过该功能,实现对离线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。
开发者可通过该功能,实现对在线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。
开发者可通过该功能,基于草图编辑器(SketchEditor)实现移动端交互式地图要素编辑。
要素结构
地图要素是地图的基本单位,表示地图上具有位置、分布特点和相互关系的地理实体。如:一个城市的的建筑物可以用点要素表示,道路、河流可以用线要素表示,行政区、居民区可以用区要素表示。
地图要素结构包含三个部分,分别为几何信息,属性信息和图形信息,每部分都具有其独有的信息,共同组成完整的地图要素。
功能接口
MapGIS Mobile SDK为离线、在线地图要素的编辑封装了统一的接口,核心类为要素编辑类MGSFeatureEdit。通过MGSFeatureEdit不同的构造函数来进行不同类型地图数据的操作。通过MGSFeatureEdit的append、delete、update方法实现要素的增、删、改。
接口 | 适用情况 |
---|---|
append: | 添加要素 |
deleteWithID: | 删除要素 |
update:ID: | 更新要素 |
离线、在线地图要素编辑功能使用同一套接口,区别在于根据数据类型不同,选择MGSFeatureEdit类不同的构造函数来构造对象。MGSFeatureEdit提供了4个构造函数,如下:
接口 | 适用情况 | 接口 |
---|---|---|
initWithVectorLayer: | 离线 | 通过矢量图层构造编辑对象。 离线数据常用的方法。 |
initWithIVectorCls: | 离线 | 通过矢量类对象构造编辑对象。 通常只提供.db数据库时,采用此方法。 |
initWithIGServerBaseURL:dataURL: | 在线 | 方便获取在线图层数据的URL地址时采用此方法。 |
initWithIGServerBaseURL:docName:mapID:layer: | 在线 | 方便获取到在线图层数据在地图文档中的ID时,采用此方法。 |
下面通过示例展示四种构造函数的用法:
(1) 通过矢量图层构造要素编辑对象
//获取矢量图层 MGSVectorLayer *vectorLayer = (MGSVectorLayer *)[_mapView.map getLayerAtIndex:8]; //构造要素编辑对象 MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithVectorLayer:vectorLayer];
(2) 通过矢量类构造要素编辑对象
//构造数据库对象 MGSDataBase *dataBase=[[MGSDataBase alloc] init]; //.mgdb数据库离线本地路径 NSString *dbPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"/MapGIS Mobile 2D Sample/Map/MapEdit/武汉MKT.mgdb"]; //打开数据库 [dataBase open:dbPath]; //通过数据库初始化简单要素类 MGSSFeatureCls *featureCls=[[MGSSFeatureCls alloc] initWithDataBase:dataBase]; //打开要素图层 [featureCls openWithID:9];//从1开始 //构造要素编辑对象 MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIVectorCls:featureCls];
(3) 根据在线图层的URL构造要素编辑对象
//根据服务基地址、图层URL构造要素编辑对象 MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIGServerBaseURL:@"http://develop.smaryun.com:6163/igs" dataURL:@"gdbp://MapGisLocal/武汉MKT/sfcls/自绘点"];
(4) 根据在线图层的ID构造要素编辑对象
//根据服务基地址、地图文档名称、地图索引、图层索引构造要素编辑对象 MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIGServerBaseURL:@"http://develop.smaryun.com:6163/igs" docName:@"WuHanEdit" mapID:0 layer:8];